package com.thinking.in.spring.bean.definition;

import com.think.in.spring.ioc.overview.domain.User;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.GenericBeanDefinition;

/**
 *
 *
 * @author : zjj
 * @date : 2021/12/28 14:42
 */
public class BeanDefinitionCreationDemo {

    public static void main(String[] args) {
        // 方式一 ： BeanDefinitionBuilder
        BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(User.class);

        beanDefinitionBuilder.addPropertyValue("id",1);
        beanDefinitionBuilder.addPropertyValue("name","小马哥");

        // 这里只是定义，并非终态
        BeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();

        // 方式二 ：
        GenericBeanDefinition genericBeanDefinition = new GenericBeanDefinition();
        genericBeanDefinition.setBeanClass(User.class);

        MutablePropertyValues propertyValues = new MutablePropertyValues();

      /*  propertyValues.addPropertyValue("id",1);
        propertyValues.addPropertyValue("name","小马哥：333");*/
        propertyValues
                .add("id",1)
                .add("name","小马哥:type2");

        genericBeanDefinition.setPropertyValues(propertyValues);







    }
}
